Algorithmic reactive testbench for analog designs

ABSTRACT

An Algorithmic Reactive Testbench (ART) system is provided. The ART system is a high level verification environment with a user program in which on or more analog testbenches are instantiated and operated as prescribed in the program algorithm, and the properties of the unit testbenches (test objects) can be influenced by prior analysis of themselves or other tests. The results of the analysis may also affect the flow of the program itself. In the ART system, modification of the properties of a unit testbench occurs separately in the user program after definition of the unit testbench in the program (test object). A test object is a representation of a unit testbench along with its complete simulation setup and all associated data for the simulation. The test object may also contain various properties including information reflecting the status of the test object. The modification of a property of a test object is an act of communication in the ART system from the ART program to the test object.

FIELD OF THE INVENTION

The present invention relates to simulation techniques for semiconductor integrated circuits and, in particular, to a high level verification environment with a user program in which one or more analog testbenches are instantiated and operated as prescribed in the program algorithm and the properties of the test benches (test objects) can be influenced by prior analysis of themselves or other tests.

DISCUSSION OF THE RELATED ART

A testbench is a complete verification environment that applies stimulus to and checks the response from a semiconductor integrated circuit design, often referred to as a “device under test” or DUT for short. The testbench is connected to the DUT to engage in testing. Thus, for purposes of discussion herein, the DUT is considered a part of the testbench.

A testbench of an analog integrated circuit design consists of an analog design (DUT) and its surrounding circuitry to drive and monitor the design (DUT). The testbench is represented as a netlist for testing by simulation.

An analog test encompasses an analog simulation setup (including the testbench and simulation environment), the simulation run (i.e., execution) and the simulation results analysis. The test (and testbench) is self-contained in the sense that the simulation runs without any further external input that can affect the simulation. A test specification is the test except the actual simulation run and the actual simulation results analysis.

A reactive testbench is a testbench the properties of which change in response to prior tests/analyses. The properties in analog testbenches include test (simulation) conditions, design variables, PVT (process/device models, power supply voltages, and circuit temperatures) and all underlying simulator parameters. Reactive testbenches are commonplace today in digital circuit design testing, e.g., directed-random testbenches in IEEE 1800-2005 System Verilog.

Analog circuit designers have been working with a testbench on an interactive verification system/environment such as Cadence Analog Design Environment (ADE). Users define a testbench, run simulation and analyze the results in such a system, one testbench at a time. When results of a particular testbench need to be passed to the next testbenches, typically it has been done manually by entering the measured results of the first testbench when defining the next testbenches. Testbench definition on such a system is done by setting the configurations; the system internally uses the configuration information to determine exactly what to do and how to do it. That is, users control the system's detailed operations on the testbench by setting the configurations. Such a system may intermediately generate a script language program to define and operate on a testbench. Some advanced users may actually change/modify the program for some sophisticated operations, but the basic mode of operation is unchanged for the most part.

Recently, more advanced systems, such as Cadence ADE-XE/GXE, are available that allow users to define and operate on multiple testbenches at the same time. In ADE-XL and ADE-GXL, individual testbenches are primarily stand alone in the sense that they are not communicating with each other. ADE-XLUGXL do provide some mechanisms for the testbenches to communicate. One such mechanism is using a global variable the value of which a testbench updates; all other testbenches that have the same variable name automatically use the updated value. The communication mode is basically broadcasting. Another mechanism in ADE-XL/GXL is using a function called “calcVal( )” in individual testbenches that need to use the results of other testbenches. This communication is point-to-point, defined in the receiver testbench definition. That is, the communication is fixed in the communication expressions during the life of the testbenches until they are changed in the testbench definitions.

Users work with testbenches on ADE-XL/GXL interactively, one session at a time. A session may involve multiple testbenches. Users interact with the system by setting the configurations (also called environments). As in ADE, the system may dump out a script language program for user's modification, but the fundamental mode of operation is largely the same.

SUMMARY OF THE INVENTION

The present invention provides an Algorithmic Reactive Testbench (ART) system. The ART is a high level verification environment with a user program in which one or more analog testbenches are instantiated and operated as prescribed in the program algorithm, and the properties of the unit testbenches (test objects) can be influenced by prior analysis of themselves or other tests. The analysis results may also affect the flow of the program itself. In the ART system, modification of the properties of a unit testbench occurs separately in the user program after definition of the unit testbench (test object) in the program. A test object is a representation of a unit testbench along with its complete simulation setup and all associated data for the simulation. The test object may also contain various properties including information reflecting the status of the test object. The modification of a property of a test object is an act of communication in the ART system from the ART program to the test object.

The features and advantages of the various aspects of the present invention will be more fully understood and appreciated upon consideration of the following detailed description of the invention and the accompanying drawings, which set forth an illustrative embodiment in which the concepts of the invention are utilized.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flow chart illustrating an algorithmic reactive testbench technique for analog designs in accordance with the concepts of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

An analog testbench or test specification may be seen as a self-contained object for its simulation. That is, the object is a self-contained, stand-alone unit or entity for its internal operations (methods in object-oriented programming terminology) such as its simulation operation. It is referred to herein as a test object. The test object contains various properties and methods.

In this object-orient view of an analog testbench and test specification, we also consider the changes in the properties of the testbench (such as simulation setup) as inputs to the testbench (and its tests) or test object that is otherwise largely self-contained. In other words, the inputs to the testbench are anything that might change or influence the simulation and the simulation results. Outputs of the analog testbench (and its tests) are simulation results and their post-simulation analysis results, if any.

By feeding the outputs of the one or plurality of analog testbenches to their inputs, that is, changing their properties based on prior analyses results of themselves or others, we can obtain a reactive network or system of analog testbenches. We refer to a testbench with such a reactive network of analog testbenches or test objects as a reactive testbench or a reactive analog testbench in this document.

An Algorithmic Reactive Testbench (ART, alias Analog Reactive Testbench) is a reactive testbench in which the reactive network and operations of the reactive testbench on the reactive network are algorithmically described in a user (application) program (hereinafter, an ART program or algorithm) that is executed algorithmically as prescribed in the program on an appropriate environment or platform (hereinafter, an ART programming/execution environment). Unlike traditional reactive system, the reactive network in ART is not necessarily autonomous, although it can be achieved in ART if desired. An ART program (with all its associated data) and its execution environment form a complete Algorithmic Reactive Testbench system.

ART is a high level verification environment with a user program in which one or more analog testbenches are instantiated and operated as prescribed in the program algorithm, and the properties of the unit testbenches (test objects) can be influenced by prior analysis of themselves or other tests. The analyses results may also affect the flow of the program itself. In ART, modification of the properties of a unit testbench occurs separately in the program after the definition (i.e., instantiation/creation) of the unit testbench in the program. The definition/instantiation of the testbench in the program is referred to in this document as a test object. A test object is a representation of a unit testbench along with its complete simulation setup and all associated data for the simulation. The test object may also contain various properties including some information reflecting the status of the test object. The modification of a property of a test object is an act of communication in ART from the ART program to the test object.

In ART, the modification/communication is an assignment statement executed procedurally in the program, operationally separate from the test object definition/instantiation in the program. The execution of the assignment statement changes a property in the subject test object with a new value obtained in the evaluation of the assignment statement in the program. That is, a value, rather than an expression, is passed to the test object. Such as assignment communication to a test object can freely occur anytime anywhere in the program after the creation of the test object. Each assignment communication may pass a different value from different source. In other words, the communication/value-passing in ART are events in the program, semantically separate from the definitions/instantiations of the destination test objects. The events may involved source test objects in the communication assignment expressions.

Test objects can be (re)created in an ART program anytime anywhere in the program. When they are being (re)created, they may take values from the program for their properties. Those values can be constants or variables in the program, the values of which are evaluated from expressions that may involve prior tests and/or analyses results. That is, values may be passed from the ART program to test objects when the test objects are (re)created. This is another (altered) form of communication from the ART program to the test object. But even in this case, values are passed to the test objects, not communication expressions, when they are being (re)created in the ART program.

Test objects can be executed of their simulations (i.e., simulation methods) or other operations (i.e., methods) defined in or for them after their creation in the program. In ART, the simulation execution of test objects can be explicit in the program or implicit/indirect in the program. Simulation operation of a test object can occur anytime (and any number of times) anywhere in the ART program after the test object's creation with its appropriate setup. Some properties of the test objects may be changed to reflect their status as a result of their simulation execution or to accommodate post-simulation processing results in the test objects such as parsed simulation database and waveform plots. These updates can be initiated by the test objects themselves when they are executed or explicitly initiated in the ART program.

In ART, communication from test objects to their host ART program occurs when the program accesses the properties or execution results of the test objects. It occurs in the program when an expression involving the test objects' properties or prior simulation/analyses results is evaluated. The evaluated results may be passed to other test objects (or themselves) or saved in variables in the program for later use. In ART, value-passing is visible on the ART program, which can be used in parallel or distributed processing of the program to speed up the execution.

An ART (Algorithmic Reactive Testbench, aka Analog Reactive Testbench) program sets up an analog test (i.e., test specification), initiates simulation of the test, performs simulation results analyses, and then passes the analyses results to succeeding tests that may include itself. An ART program is a user algorithm, rather than a software tool or a configuration (a set of user application settings) to such a tool, to perform a sequence of tests in a prescribed manner. In contrast, a configuration dictates to a software tool what to do. Unlike the configuration, the program in ART describes not only what to do, but also how to do at high level.

An embodiment of an Analog Reactive Testbench has been demonstrated in a subsystem of ATA (Analog Testbench Automation). The subsystem is called ATA Program's Abstract Machine (PAM). PAM is an environment for executing user's ART programs (PAM programs). PAM along with its supported user programming language and user's application PAM program in that language is an implementation/embodiment of ART.

An example user's PAM program is shown and described below.

newtest test 1_1 tran comp_top_siml.scs start=0.1 stop=0.2 step=0.001     save=‘vo a6 al0’; newtest test 1_2 tran comp_top_siml.scs start=0.25 stop=0.35     step=0.001 save=‘vo a6 al0’; newtest test2_l tran comp_top_sim2.scs start=0.09e−3 stop=0.11e−3     step=1e−6 save=‘vo vp vn’;

Three test objects named test1_(—)1, test1_(—)2, and test2_(—)1 are created by the three statements above. Statements are separated by semicolon “;”. They are all tran mode simulations with their own testbench netlists (the third arguments). The rest of arguments are the options to the underlying simulator, Spectre in this case.

newplot testl_l title=‘Threshold Vthp’ grid=True ylabel=‘ Volts’; run testl_l; plot test 1_1; var[ ‘vthp’] = ycrossingx testl_l vo al0-a6 1.5; spec vthp_spec var [ ‘vthp’] [ 0] min=.06 max=.07;

We entered a waveform plot specification to the test1_1 test object followed by running simulation oftest1_(—)1. Then we obtain a simulation plot of test1_(—)1. We also measure the differential signals (a10-a6) when the signal vo crosses a reference value of 1.5. The resulting values (solutions) are saved in a user variable var [‘vthp’ ]. Then we check the first solution if it meets the spec by being within the range of minimum 0.06 and maximum 0.07.

run testl_2; newplot testl_2 title=‘Threshold Vthn’ grid=True ylabel=‘Volts’; plot test1_2; var[ ‘vthn’] = ycrossingx testl_2 vo al0-a6 1.5; spec vthn_spec var[ ‘vthn’] [0]

Here, we run simulation of test1_(—)2 first followed by a plot specification, actual plotting, and vthn value measurement and its spec check.

setvar test2_l vthp = ycrossingx testl_l vo al0 1.5; valuepassing test2_l vthn = yc testl_2 vo a6 1.5; run test2_l; newplot test2_l title=‘Tprop,lh’ grid=True ylabel=‘Volts’; plot test 2_1; var[ ‘test2_l_vo_cross’] = yc test2_l vo time 1.5; var[ ‘test2_l_vpn_cross’] = yc test2_l vp-vn time 0.038; var[ ‘tprop_lh’] = var[ ‘test2_l_vo_cross’] [ 0] − var[ ‘test2_l_vpn_cross’] [ 0];

The first two statements here measure the input signals' values when vo signal crosses the reference 1.5 from tests test1_(—)1 and test1_(—)2. (yc is an alias to ycrossingx.) These values are passed to test2_(—)1 test object on its properties vthp and vthn, respectively, (setvar and valuepassing are synonymous.) Then we run simulation of test2_(—)1 followed by a plot specification, actual plotting, and some waveform measurements. The last three statements measure a delay time from the differential input signals vp-vn crossing the reference 0.038 to the output signal vo crossing its reference 1.5. The computed delay time is saved in the user variable var[‘tprop_(—)1h’].

printvar; checkout;

The printvar instruction show all user variables with their values. The checkout instruction returns the results of all spec checks entered. The results of these instructions are following:

PAM statement: printvar ata> printvar ( ) vthp is [ 0.064670000000000005] vthn is [ −0.0020700000000000163] test2_l_vo_cross is [ 0.000101511] test2_l_vpn_cross is [ 0.0001] tprop_lh is 1.511e−06 PAM statement: checkout ata> checkout ( ) vthp_spec: min= 0.6 , actual= 0.06467 , max= 0.07 , Result= Pass vthn_spec: min= None , actual= −0.00207 , max- None , Result- N/A

It should be understood that the particular embodiments of the invention described above have been provided by way of example and that other modifications may occur to those skilled in the art without departing from the scope and spirit of the invention as express in the appended claims and their equivalents. 

1. A high level testbench method for operating upon analog integrated circuit designs, the method comprising: creating one or more unit testbenches for one or more analog integrated circuit designs, wherein each unit testbench is represented as a test object that contains test object properties for test object operations including test object simulation; each test object being defined and/or instantiated in a user application program; in the user application program, making changes in the test object properties by passing values to the test object properties, separate from the definition of the test objects, wherein the definitions/instantiations, the step of passing values to the test object properties, and initiation of test object operations are prescribed in the user application program, and wherein the user application program is executed on a platform according to the user application program.
 2. A method as in claim 1, and wherein each test object has no access to any other test object and/or to other properties of the user application program.
 3. A method as in claim 1, and wherein the step of passing values occurs in the user application program when the test objects are defined or re-defined with values.
 4. A method as in claim 1, and further comprising: marking a test object property to reflect its status regarding its operation.
 5. A method as in claim 4, and wherein the marking step comprises marking a test object property as needing simulation after a test object property is changed that may change or influence its simulation results.
 6. A method as in claim 5, and wherein the marking step comprises marking a test object as not needing simulation after completing simulation or re-simulation of the test object.
 7. A method as in claim 5, and further comprising: checking the marking to determine whether or not to perform further operations.
 8. A method as in claim 1, and further comprising: parsing an output database resulting from simulation of a unit testbench following the simulation, and attaching the parsed database to the test object as a property.
 9. A method as in claim 8, and further comprising: utilizing the parsed database instead of accessing the output database directly.
 10. A method of simulating an analog integrated circuit design, the method comprising: creating at least one unit testbench for the analog integrated circuit design, the unit testbench being represented as a test object that contains test object properties for test object operations; initiating performance of the test object operations; and in response to performance of the test object operations, making changes in the test object properties by passing new values to the test object properties, wherein the step of initiating performance of the test object operations and the step of passing new values to the test object properties are prescribed in a user application program.
 11. A method as in claim 10, and wherein the test object operations includes test object simulation.
 12. A method as in claim 10, and wherein the step of passing new values occurs in the user application program when the new values define or re-define test objects.
 13. A method as in claim 10, and wherein the user application program is executed on a platform according to the user application program.
 14. A method as in claim 10, and wherein each test object is defined and/or instantiated in the user application program. 